<?php

	session_start();

	require('setlang.php');
	require('Models/basics.php');
	require('Models/connectBDD.php');
	require('Models/alert.php');
	require('Models/formerrors.php');
	require('Models/bienproprio.php');
	require('Models/adresse.php');
	require('Models/ariane.php');
		
	$Ariane = getArianeGenealogy();

	$connexion = PDO_BDD_connect();
	//On charge les biens et les intermédiaires
	$goods = getProprioGoods($connexion);
	$intermediaires = getIntermediairesInfos($connexion,$goods);

	if (!(isValidSessionUser($connexion) && areValidUserRights($connexion) && $_SESSION['userRights']->label == "proprietaire")) {
		header('Location:logout.php');
	}
	//Si on valide l'ajout on teste les inputs
	if (isset($_POST['valider'])) {

		$errors = getFormErrors(array("e-mail","nom","capacity","categorie","numero","rue_1","rue_2","rue_3","cp","ville","pays"),"POST");
		
		//gestion du cas de l'intermédiaire
		//l'intermédiaire est connu et est correct
		if (isset($_POST['intermedconnu']) && $_POST['intermedconnu'] != "" && isGoodIntermediaire($intermediaires,$_POST['intermedconnu']))
		{
			$intermediaire = $_POST['intermedconnu'];
		}
		//l'intermédiaire est nouveau
		elseif (isset($_POST['newinterm']) && $_POST['newinterm'] != "")
		{
			
			$intermediaire = getIntermediaireOrClientByName($connexion,$_POST['newinterm']);
			
			//si personne ne correspond à cette description
			if ($intermediaire == -1)
			{
				$intermediaireError = true;
			}
			else
			{
				$intermediaireAlert = true;
			}
			
		}
		else
		{
			$intermediaireError = true;
		}
		//On teste les rues (si rue_1 est informé ça suffit)
		if (isset($_POST["rue_1"]))
		{
			if (array_search("rue_2",$errors) !== false)
			{
				unset($errors[array_search("rue_2",$errors)]);
			}
			if (array_search("rue_3",$errors) !== false)
			{
				unset($errors[array_search("rue_3",$errors)]);
			}
		}
		//Si on a aucune erreur au final on fait l'ajout
		if (empty($errors)) {
			
			$nom = htmlspecialchars($_POST['nom']);
			$capacity = intval($_POST['capacity']);
			$category = htmlspecialchars($_POST['categorie']);
			$proprio = $_SESSION['userid'];
			$adresse = existsAddress($connexion); //existsAdress retourne 0 ou l'id trouvée
			$now = time();
			
			$nomMaxLength = 100;
			$dateHeureMaxLength = 100;
			$categoryMaxLength = 100;
			
			
			//Ajout adresse
			if ($adresse == 0) {
				
				$adresse = addAddress($connexion);
				
				if ($adresse == -1) {
					die("Une erreur s'est produite lors de l'ajout de l'adresse. Veuillez contactez l'administrateur.");
				}
			
			}
			
			//Ajout bien
			$request = $connexion->prepare("
				INSERT INTO bien (nom,capacite,categorie,ref_adresse,ref_proprio,ref_intermediaire,added_timestamp)
				VALUES (:nom,:capacite,:categorie,:ref_adresse,:ref_proprio,:ref_intermediaire,:added_timestamp)");
			$request->bindParam(':nom', $nom, PDO::PARAM_STR, $nomMaxLength);
			$request->bindValue(':capacite', $capacity, PDO::PARAM_INT);
			$request->bindParam(':categorie', $category, PDO::PARAM_STR, $categoryMaxLength);
			$request->bindValue(':ref_adresse', $adresse, PDO::PARAM_INT);
			$request->bindValue(':ref_proprio', $proprio, PDO::PARAM_INT);
			if (isset($intermediaireError) || isset($intermediaireAlert))
			{
				$request->bindValue(':ref_intermediaire', $proprio, PDO::PARAM_INT);
			}
			else
			{
				$request->bindValue(':ref_intermediaire', $intermediaire, PDO::PARAM_INT);
			}
			$request->bindParam(':added_timestamp', date("Y-m-d H:i:s", $now), PDO::PARAM_STR, $dateHeureMaxLength);
			$request->execute();
			
			//Récupération de l'id du bien ajouté
			$idBien = $connexion->lastInsertId();
			
			//Ajout alerte intermédiaire
			if (isset($intermediaireAlert))
			{
				addAlertToUser($connexion, $intermediaire, $idBien, "int");
			}
			
			require("Views/bienajoute.php");
		
		}

	}
	else
	{
		require("Views/ajoutbienproprio.php");
	}

?>
